Field of the Invention
The present invention relates to the field of messaging and more particularly to message queue management in a messaging system.
Description of the Related Art
In the field of information technology, messaging refers to the exchange of information between two computing processes. A message can be something as simple as just a few bits of data, or something as robust as an electronic mail message containing embedded multimedia imagery. In its simplest form, a messaging system acts to directly exchange messages between messaging partners. Inter-process communications methods facilitate message passing between processes in a computer communications network. E-mail messaging systems rely upon messaging servers both to transmit and receive messages onto a network, and instant messaging systems moderate and facilitate the exchange of instantaneous messages between chat partners.
Message queues provide an asynchronous mode of message passing between processes. In a message queuing system, applications can submit messages to a queue for delivery to subscribing clients who can consume the messages in the queue at a later time. To the extent that a uniform message structure can be agreed upon between message provider and message consumer, a message queue can provide an ideal solution for disparate applications seeking to communicate without requiring internal codification for compatibility with one another.
Modern message queuing systems account for the possibility of the failure of supporting infrastructure such as network communications loss, server crashes and the like. In this regard, current messaging systems enable a delivery model to be specified such that messages that contain critical data are persisted to disk or other forms of reliable storage, such that the message can be recovered and processed following machine reboots and application failures/shutdown. Some messaging systems extend this concept further and provide a message reliability level to provide a finer grained control on the quality of service provided.
Persisting messages to fixed storage during message queuing, though, can become taxing on the underlying computing infrastructure. Specifically, for a high volume message queue, significant disk storage will be required to persist all affected messages. Further, the act of persisting, retrieving and intelligently purging messages so as to account for the possibility of an infrastructure failure can be time consuming resulting in performance delays. Thus, as the reliability level of a messaging system increases based upon message persistence, processing overhead placed upon the messaging system increases resulting in a reduction in system performance.